package cl.inmobiliaria.beans;

import java.io.Serializable;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import cl.inmobiliaria.entidades.Parametro;
import cl.inmobiliaria.negocio.DatosCotizacion;
import cl.inmobiliaria.negocio.DatosDepartamento;
import cl.inmobiliaria.negocio.DatosRegionales;
import cl.inmobiliaria.services.Estacionamiento;
import cl.inmobiliaria.entidades.Bodega;
import cl.inmobiliaria.entidades.Cotizacion;
import cl.inmobiliaria.entidades.Departamento;
import cl.inmobiliaria.entidades.Estac;
import cl.inmobiliaria.entidades.Etapa;
import cl.inmobiliaria.entidades.Productos;
import cl.inmobiliaria.entidades.Proyecto;


@ManagedBean(name = "desplegarCotizacionBean")
@ViewScoped
public class DesplegarCotizacionBean implements Serializable{

	private static final long serialVersionUID = 1L;
	private String idInmueble;
	private String orientacion;
	private String dormitorios;
	private String banos;	
	private String shaftM2;
	private String superficieUtilM2;
	private String terrazaM2;
	private String loggiaM2;
	private String palierM2;
	private String espacioComunM2;
	private String totalM2;
	private String numDepto;
	private String ufDepto;
	private String pesosDepto;
	private String numEstacionamiento;
	private String ufEstacionamiento;
	private String pesosEstacionamiento;
	private String numBodega;
	private String ufBodega;
	private String pesosBodega;
	private String pesosTotal;
	private String ufTotal;
	
	public String getIdInmueble() {
		return idInmueble;
	}
	public void setIdInmueble(String idInmueble) {
		this.idInmueble = idInmueble;
	}
	public String getOrientacion() {
		return orientacion;
	}
	public void setOrientacion(String orientacion) {
		this.orientacion = orientacion;
	}
	public String getDormitorios() {
		return dormitorios;
	}
	public void setDormitorios(String dormitorios) {
		this.dormitorios = dormitorios;
	}
	public String getBanos() {
		return banos;
	}
	public void setBanos(String banos) {
		this.banos = banos;
	}
	public String getShaftM2() {
		return shaftM2;
	}
	public void setShaftM2(String shaftM2) {
		this.shaftM2 = shaftM2;
	}
	public String getSuperficieUtilM2() {
		return superficieUtilM2;
	}
	public void setSuperficieUtilM2(String superficieUtilM2) {
		this.superficieUtilM2 = superficieUtilM2;
	}
	public String getTerrazaM2() {
		return terrazaM2;
	}
	public void setTerrazaM2(String terrazaM2) {
		this.terrazaM2 = terrazaM2;
	}
	public String getLoggiaM2() {
		return loggiaM2;
	}
	public void setLoggiaM2(String loggiaM2) {
		this.loggiaM2 = loggiaM2;
	}
	public String getPalierM2() {
		return palierM2;
	}
	public void setPalierM2(String palierM2) {
		this.palierM2 = palierM2;
	}
	public String getEspacioComunM2() {
		return espacioComunM2;
	}
	public void setEspacioComunM2(String espacioComunM2) {
		this.espacioComunM2 = espacioComunM2;
	}
	public String getTotalM2() {
		return totalM2;
	}
	public void setTotalM2(String totalM2) {
		this.totalM2 = totalM2;
	}
	public String getNumDepto() {
		return numDepto;
	}
	public void setNumDepto(String numDepto) {
		this.numDepto = numDepto;
	}
	public String getUfDepto() {
		return ufDepto;
	}
	public void setUfDepto(String ufDepto) {
		this.ufDepto = ufDepto;
	}
	public String getPesosDepto() {
		return pesosDepto;
	}
	public void setPesosDepto(String pesosDepto) {
		this.pesosDepto = pesosDepto;
	}
	public String getNumEstacionamiento() {
		return numEstacionamiento;
	}
	public void setNumEstacionamiento(String numEstacionamiento) {
		this.numEstacionamiento = numEstacionamiento;
	}
	public String getUfEstacionamiento() {
		return ufEstacionamiento;
	}
	public void setUfEstacionamiento(String ufEstacionamiento) {
		this.ufEstacionamiento = ufEstacionamiento;
	}
	public String getPesosEstacionamiento() {
		return pesosEstacionamiento;
	}
	public void setPesosEstacionamiento(String pesosEstacionamiento) {
		this.pesosEstacionamiento = pesosEstacionamiento;
	}
	public String getNumBodega() {
		return numBodega;
	}
	public void setNumBodega(String numBodega) {
		this.numBodega = numBodega;
	}
	public String getUfBodega() {
		return ufBodega;
	}
	public void setUfBodega(String ufBodega) {
		this.ufBodega = ufBodega;
	}
	public String getPesosBodega() {
		return pesosBodega;
	}
	public void setPesosBodega(String pesosBodega) {
		this.pesosBodega = pesosBodega;
	}
	public String getPesosTotal() {
		return pesosTotal;
	}
	public void setPesosTotal(String pesosTotal) {
		this.pesosTotal = pesosTotal;
	}
	public String getUfTotal() {
		return ufTotal;
	}
	public void setUfTotal(String ufTotal) {
		this.ufTotal = ufTotal;
	}
	
	
	public DesplegarCotizacionBean(){
		int valorUF = 22852;
		
		Productos productos = new Productos();
		DatosDepartamento inmueble = new DatosDepartamento();
		
		Etapa etapa = new Etapa();
		Proyecto proyecto = new Proyecto();

		int idProyecto = (Integer) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("idProyecto");
		proyecto.setIdProyecto(idProyecto);
		
		etapa.setIdEtapa(1);
		etapa.setProyecto(proyecto);
		
		DatosCotizacion datosCotizacion = new DatosCotizacion();
		
		int idCotizacion = (Integer)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("idCotizacion");
		Cotizacion cotizacion = datosCotizacion.traerCotizacionPorId(idCotizacion);
		
		productos = inmueble.obtenerProductos(etapa);
		Bodega bodega = datosCotizacion.traeBodegaSeleccionada(productos.getBodegaList(), cotizacion.getIdBodega());
		Departamento departamento = datosCotizacion.traeDepartamentoSeleccionado(productos.getDeptoList(), cotizacion.getIdInmueble());
		Estac estacionamiento = datosCotizacion.traeEstacionamientoSeleccionado(productos.getEstacList(), cotizacion.getIdEstacionamiento());
		
		DecimalFormat formatoUF = new DecimalFormat("##,###,###");
		DecimalFormat formatoPesos = new DecimalFormat("'$'###,###,###");
		
		this.superficieUtilM2 = String.valueOf(departamento.getTipoDepartamento().getM2Util());
		this.orientacion = departamento.getIdOrientacion();
		this.terrazaM2 = String.valueOf(departamento.getTipoDepartamento().getM2Terraza());
		this.dormitorios = String.valueOf(departamento.getTipoDepartamento().getDormitorios());
		this.loggiaM2 = String.valueOf(departamento.getTipoDepartamento().getM2Loggia());
		this.banos = String.valueOf(departamento.getTipoDepartamento().getBanos());
		this.palierM2 = String.valueOf(departamento.getTipoDepartamento().getM2Palier());
		this.shaftM2 = String.valueOf(departamento.getTipoDepartamento().getM2Shaft());
		this.espacioComunM2 = String.valueOf(departamento.getTipoDepartamento().getM2EspacioComun());
		this.totalM2 = String.valueOf(departamento.getTipoDepartamento().getM2Total());
		this.idInmueble = String.valueOf(departamento.getIdDpto());
		
		this.numDepto = String.valueOf(departamento.getIdDpto());
		this.ufDepto = String.valueOf(formatoUF.format(departamento.getPrecioUf()*10));
		int intPesosDpto = (int)departamento.getPrecioUf() * 10 * valorUF;
		this.pesosDepto = String.valueOf(formatoPesos.format(intPesosDpto));
		
		this.numEstacionamiento = String.valueOf(estacionamiento.getIdEstacionamiento());
		this.ufEstacionamiento = String.valueOf(formatoUF.format(estacionamiento.getPrecio()));
		int intPesosEstac = (int)estacionamiento.getPrecio() * valorUF;
		this.pesosEstacionamiento = String.valueOf(formatoPesos.format(intPesosEstac));
		
		this.numBodega = String.valueOf(bodega.getIdBodega());
		this.ufBodega = String.valueOf(formatoUF.format(bodega.getPrecio()));
		int intPesosBodega = (int)bodega.getPrecio() * valorUF;
		this.pesosBodega = String.valueOf(formatoPesos.format(intPesosBodega));
		
		int totalUF = (int) ((departamento.getPrecioUf())*10) +  (int) ((estacionamiento.getPrecio())) + (int) ((bodega.getPrecio()));
		int totalPesos = intPesosDpto + intPesosEstac + intPesosBodega;
	
		this.ufTotal = String.valueOf(formatoUF.format(totalUF));
		this.pesosTotal = String.valueOf(formatoPesos.format(totalPesos));
	}
	
	
}

